Q: ドキュメントベースの Cocoa アプリケーションで「最近使った書類」メニュー項目を削除するにはどうすればよいのでしょうか。 A: デベロッパによっては、ドキュメントベースの Cocoa アプリケーションの「ファイル」メニューから「最近使った書類」メニュー項目を恒久的に取り除きたいことがあります。しかし、このメニュー項目を Interface Builder の nib から削除するだけでは不十分です。というのも、NSDocumentController によってメニュー項目の有無が確認され、起動時にその項目が再挿入されるからです。メニュー項目を恒久的に取り除くには、代わりに、実行時の NSDocumentController によるメニュー項目の追加の後で、メニュー項目を削除する必要があります。メニュー項目の削除を行う最適な場所は、アプリケーションの委任メソッド -applicationDidFinishLaunching: の中です。削除の方法についてはリスト 1 のコードを参照してください。なお、アップルの Aqua Interface Guidelines では、「最近使った書類」メニュー項目を残すことを勧めています。
[2003 年 9 月 15 日]
リスト 1. 「最近使った書類」メニュー項目の削除
|
// fileMenu はアプリケーションの「ファイル」メニューに対して作成するアウトレット
int openDocumentMenuItemIndex = [fileMenu indexOfItemWithTarget:nil
andAction:@selector(openDocument:)];
if (openDocumentMenuItemIndex>=0 &&
[[fileMenu itemAtIndex:openDocumentMenuItemIndex+1] hasSubmenu])
{
// これを「最近使った書類」メニュー項目とみなす。なぜなら、これは、
// NSDocumentController が「最近使った書類」メニュー項目を「ファイル」
// メニューに追加するために使用するヒューリスティックスだからである
[fileMenu removeItemAtIndex:openDocumentMenuItemIndex+1];
}
|
|